package com.jiruan.invoicemanagementsystem.dao.Imp;

import com.jiruan.invoicemanagementsystem.dao.IBaseDateDao;
import com.jiruan.invoicemanagementsystem.pojo.BaseData;
import com.jiruan.invoicemanagementsystem.util.DBHelper;
import com.jiruan.invoicemanagementsystem.vo.InvoicingRecordDetail;

import java.util.ArrayList;
import java.util.List;

public class IBaseDateDaoImp implements IBaseDateDao {


    //用于展示：发票抬头及地址信息
    //根据发票基本信息、默认邮箱信息、默认地址信息拼接出展示信息
    //包括： 1.抬头 2.邮寄地址 3.税号 4.电子邮箱 四项

    public ArrayList<BaseData> selectBaseDate(){

        String sql="select * from basedata ";
        return DBHelper.currencySqlQuery(BaseData.class,sql.toString());

//        StringBuilder sql = new StringBuilder("select bankName, bankAccount,phone ,address from basedata where 1=1");
//        ArrayList<Object> paramList = new ArrayList<>(); // 存储SQL参数（避免SQL注入）
//
//        // 5. 动态拼接查询条件：仅当baseData的对应属性非空时，才添加条件（灵活适配多条件查询）
//        // 条件1：发票抬头（title）- 非空才添加
//        if (baseData.getTitle() != null && !baseData.getTitle().trim().isEmpty()) {
//            sql.append(" and title = ?");
//            paramList.add(baseData.getTitle().trim()); // 加入参数，去除前后空格避免匹配误差
//        }
//        // 条件2：税号（taxNo）- 非空才添加（与title组合查询，确保结果准确性）
//        if (baseData.getTaxNo() != null && !baseData.getTaxNo().trim().isEmpty()) {
//            sql.append(" and tax_no = ?");
//            paramList.add(baseData.getTaxNo().trim());
//        }
//        return DBHelper.currencySqlQuery(BaseData.class,sql.toString(), paramList.toArray());
    }



    //    根据 Email 默认邮箱得到，得到basedata 的抬头，税号 ， address 得到邮寄地址
    public InvoicingRecordDetail selectBaseDateByInfo(){

        //数据库没有对应名

        String sql="select null AS category,null AS type,e.emailDetail,b.taxNo,b.title,a.addressDetail from Email e " +
                "left join basedata b on e.enterpriseId=b.enterpriseId " +
                "left join address a on e.enterpriseId=a.enterpriseId " +
                "where e.defaultStatus='A'";

//        String sql="select *from Email e " +
//                "left join basedata b on e.enterpriseId=b.enterpriseId " +
//                "left join address a on e.enterpriseId=a.enterpriseId " +
//                "where e.defaultStatus='A'";
//


        return  (InvoicingRecordDetail) DBHelper.currencySqlQuery(InvoicingRecordDetail.class,sql).getFirst();

    }


    // 根据 订单编号 发票，  ，得到BaseData对象
        public BaseData queryBaseDateNo(String no){
        String sql="select * from baseData bd left join `order` o on o.enterpriseId=bd.enterpriseId where o.no=?";
        return (BaseData) DBHelper.currencySqlQuery(BaseData.class,sql,no).getFirst();
    }



    public int updateBaseDate(BaseData baseData) {
        String sql="update base_data set tax_rate=?,tax_rate_type=?,tax_rate_type_name=? where id=?";
        return 1;
    }
}
